package com.tanhua.server.controller;

import com.tanhua.model.domain.PageResult;
import com.tanhua.model.dto.RecommendUserDto;
import com.tanhua.model.vo.NearUserVo;
import com.tanhua.model.vo.TodayBest;
import com.tanhua.server.service.TanHuaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/tanhua")
public class TanHuaController {



    @Autowired
    private TanHuaService tanHuaService;





    /**
     * 查询今日佳人
     * 请求路径：/tanhua/todayBest
     * 请求方式：get
     * 响应数据：TodayBest对象
     */
    @GetMapping("/todayBest")
    public ResponseEntity queryTodayBest() {
        TodayBest vo = tanHuaService.queryToDayBest();
        return ResponseEntity.ok(vo);
    }

    /**
     * 分页查询推荐好友列表
     * 1.请求路径：/tanhua/recommendation
     * 2.请求方式：get
     * 3.请求参数：RecommendUserDto
     * 4.响应数据：PageResult
     */
    @GetMapping("/recommendation")
    public ResponseEntity queryRecommendFriends(RecommendUserDto dto) {
        PageResult pageResult = tanHuaService.queryRecommendFriends(dto);
        return ResponseEntity.ok(pageResult);
    }

    /**
     * 好友申请之查看佳人的用户详情：
     * 请求路径：/tanhua/:id/personalInfo
     * 请求方式：get
     * 请求参数：路径参数id，要查看用户详情的那个用户id
     * 响应数据：ToDayBest
     */
    @GetMapping("/{id}/personalInfo")
    public ResponseEntity queryToBestInfo(@PathVariable("id") Long id) {
        TodayBest todayBest = tanHuaService.queryToBestInfo(id);
        return ResponseEntity.ok(todayBest);
    }


    /**
     * 好友申请之查看佳人详情之后，点击聊一下就可以查看他设置的陌生人问题
     * 请求路径：/tanhua/strangerQuestions
     * 请求方式：get
     * 请求参数：userId,(用户id)
     * 响应数据：String
     */

    @GetMapping("strangerQuestions")
    public ResponseEntity lookStrangerQuestions(Long userId) {
        String strangerQuestions = tanHuaService.lookStrangerQuestions(userId);
        return ResponseEntity.ok(strangerQuestions);
    }




    /**
     * 好友申请之回复陌生人问题：
     * 实现思路：表现层接收参数交由业务层处理
     *        业务层按照约定好的格式构建数据，调用环信服务发送信息
     *
     * 请求路径：/tanhua/strangerQuestions
     * 请求方式：post
     * 请求参数：integer userId(这个是要回复的用户id);string reply(回复的内容),俩者使用map集合接收
     * 响应数据：null
     */
    @PostMapping("/strangerQuestions")
    public ResponseEntity replyStrangerQuestions(@RequestBody Map map){

        //1.接收参数，因为前端传递过来的用户id 是Integer类型，需要转为long类型
        String id = map.get("userId").toString();
        Long userId = Long.valueOf(id);
        String reply = (String) map.get("reply");

        tanHuaService.replyStrangerQuestions(userId,reply);
        return ResponseEntity.ok(null);
    }


    /**
     * 查询推荐列表卡片列表
     * 请求路径：/tanhua/cards
     * 请求方式：get
     * 响应数据：List<TodayBest>
     */
    @GetMapping("/cards")
    public  ResponseEntity lookCardsList(){

      List<TodayBest> list  = tanHuaService.lookCardsList();
      return ResponseEntity.ok(list);

    }

    /**
     * 右滑，喜欢：
     * 请求路径：/tanhua/:id/love
     * 请求方式：get
     * 请求参数：路径参数id，喜欢的用户id
     * 响应数据：null
     *
     */
    @GetMapping("/{id}/love")
    public ResponseEntity love(@PathVariable("id") Long likeUserId){
        tanHuaService.love(likeUserId);//喜欢的用户id
        return ResponseEntity.ok(null);
    }


    /**
     * 左滑，不喜欢
     * 请求路径：/tanhua/:id/unlove
     * 请求方式：get
     * 请求参数：路径参数id，不喜欢的人的用户id
     */
    @GetMapping("/{id}/unlove")
    public ResponseEntity unLove(@PathVariable("id") Long unLikeUserId){

        tanHuaService.unLove(unLikeUserId);
        return ResponseEntity.ok(null);
    }




    /**
     * 搜附近
     * 请求路径：/tanhua/search
     * 请求方式：get
     * 请求参数：String  gender(性别),String distance(搜索的范围)
     */
    @GetMapping("/search")
    public ResponseEntity<List<NearUserVo>> queryNearUser(String gender,
                                                          @RequestParam(defaultValue = "2000") String distance) {
        List<NearUserVo> list = tanHuaService.queryNearUser(gender, distance);
        return ResponseEntity.ok(list);
    }

}
